package com.zzw.utils;

import com.zzw.bean.SysUser;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;

/**
 * Shiro工具类
 * 提供Shiro相关的工具方法
 */
public class ShiroUtils {

    /**
     * 获取当前Subject对象
     * @return Subject对象
     */
    public static Subject getSubject() {
        return SecurityUtils.getSubject();
    }

    /**
     * 获取Shiro Session
     * @return Session对象
     */
    public static Session getSession() {
        return getSubject().getSession();
    }

    /**
     * 获取当前登录用户
     * @return 当前登录用户
     */
    public static SysUser getCurrentUser() {
        return (SysUser) getSubject().getPrincipal();
    }

    /**
     * 获取当前登录用户ID
     * @return 用户ID
     */
    public static Integer getUserId() {
        SysUser user = getCurrentUser();
        return user != null ? user.getId() : null;
    }

    /**
     * 判断用户是否已登录
     * @return 是否已登录
     */
    public static boolean isAuthenticated() {
        return getSubject().isAuthenticated();
    }

    /**
     * 判断用户是否拥有角色
     * @param role 角色名
     * @return 是否拥有角色
     */
    public static boolean hasRole(String role) {
        return getSubject().hasRole(role);
    }

    /**
     * 判断用户是否拥有权限
     * @param permission 权限标识
     * @return 是否拥有权限
     */
    public static boolean isPermitted(String permission) {
        return getSubject().isPermitted(permission);
    }
}
